<!DOCTYPE html>
<html lang="ja">

<head>
  <meta charset="utf-8">
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="Content-Style-Type" content="text/css">
  <script src='../bbs.js'></script>

  <!-- Global site tag (gtag.js) - Google Analytics -->
  <script async src="https://www.googletagmanager.com/gtag/js?id=UA-120820034-1"></script>

  <link href="../bbs.css" type="text/css" rel="stylesheet">
  <link rel="shortcut icon" href="/favicon.ico">
  <title>WSH対応できるとハッピーですよね | サクラエディタ過去ログ</title>
</head>
<body>
<ul class="side">
        <a href="./" class="toindex">◀ANSI版開発トップへ</a>
        <li><div class="list-title">
    <span class="no">1968</span>
    <a class="thread-title" href="1968.html#1968">WSH対応できるとハッピーですよね</a></div>
    <ul><li><div class="list-title">
    <span class="no">1969</span>
    <a class="thread-title" href="1968.html#1969">RE: WSH対応できるとハッピーですよね</a></div>
    <ul><li><div class="list-title">
    <span class="no">1976</span>
    <a class="thread-title" href="1968.html#1976">Re2: WSH対応できるとハッピーですよね</a></div>
    <ul><li><div class="list-title">
    <span class="no">1977</span>
    <a class="thread-title" href="1968.html#1977">Re3: WSH対応できるとハッピーですよね</a></div>
    </li><li><div class="list-title">
    <span class="no">1978</span>
    <a class="thread-title" href="1968.html#1978">複数マクロ</a></div>
    <ul><li><div class="list-title">
    <span class="no">1979</span>
    <a class="thread-title" href="1968.html#1979">Re:複数マクロ</a></div>
    <ul><li><div class="list-title">
    <span class="no">1981</span>
    <a class="thread-title" href="1968.html#1981">Re2:複数マクロ</a></div>
    <ul><li><div class="list-title">
    <span class="no">1983</span>
    <a class="thread-title" href="1968.html#1983">Re3:複数マクロ</a></div>
    <ul><li><div class="list-title">
    <span class="no">1984</span>
    <a class="thread-title" href="1968.html#1984">Re4:複数マクロ</a></div>
    </li><li><div class="list-title">
    <span class="no">1987</span>
    <a class="thread-title" href="1968.html#1987">Re4:複数マクロ</a></div>
    <ul><li><div class="list-title">
    <span class="no">1993</span>
    <a class="thread-title" href="1968.html#1993">Re5:複数マクロ</a></div>
    </li><li><div class="list-title">
    <span class="no">1995</span>
    <a class="thread-title" href="1968.html#1995">Re5:複数マクロ</a></div>
    </li><li><div class="list-title">
    <span class="no">1996</span>
    <a class="thread-title" href="1968.html#1996">拡張子別マクロ</a></div>
    <ul><li><div class="list-title">
    <span class="no">1997</span>
    <a class="thread-title" href="1968.html#1997">RE: 拡張子別マクロ</a></div>
    </li></ul></li></ul></li></ul></li><li><div class="list-title">
    <span class="no">1985</span>
    <a class="thread-title" href="1968.html#1985">Re3:複数マクロ</a></div>
    </li><li><div class="list-title">
    <span class="no">1994</span>
    <a class="thread-title" href="1968.html#1994">Re3:複数マクロ</a></div>
    </li></ul></li></ul></li></ul></li></ul></li></ul></li><li><div class="list-title">
    <span class="no">2015</span>
    <a class="thread-title" href="1968.html#2015">様子見…</a></div>
    <ul><li><div class="list-title">
    <span class="no">2018</span>
    <a class="thread-title" href="1968.html#2018">Re: 様子見…</a></div>
    <ul><li><div class="list-title">
    <span class="no">2020</span>
    <a class="thread-title" href="1968.html#2020">WSHの質問など(2)</a></div>
    </li></ul></li><li><div class="list-title">
    <span class="no">2019</span>
    <a class="thread-title" href="1968.html#2019">WSHの質問など(1)</a></div>
    <ul><li><div class="list-title">
    <span class="no">2021</span>
    <a class="thread-title" href="1968.html#2021">Re:WSHの質問など(1&amp;2)</a></div>
    </li></ul></li></ul></li><li><div class="list-title">
    <span class="no">2022</span>
    <a class="thread-title" href="1968.html#2022">動作記念</a></div>
    <ul><li><div class="list-title">
    <span class="no">2023</span>
    <a class="thread-title" href="1968.html#2023">RE: 動作記念</a></div>
    <ul><li><div class="list-title">
    <span class="no">2024</span>
    <a class="thread-title" href="1968.html#2024">Re2: 動作記念</a></div>
    <ul><li><div class="list-title">
    <span class="no">2025</span>
    <a class="thread-title" href="1968.html#2025">Re3: 動作記念</a></div>
    <ul><li><div class="list-title">
    <span class="no">2026</span>
    <a class="thread-title" href="1968.html#2026">Re4: 動作記念</a></div>
    <ul><li><div class="list-title">
    <span class="no">2027</span>
    <a class="thread-title" href="1968.html#2027">Re5: 動作記念</a></div>
    <ul><li><div class="list-title">
    <span class="no">2031</span>
    <a class="thread-title" href="1968.html#2031">Re6: 動作記念</a></div>
    <ul><li><div class="list-title">
    <span class="no">2039</span>
    <a class="thread-title" href="1968.html#2039">Re7: 動作記念</a></div>
    </li></ul></li></ul></li></ul></li></ul></li><li><div class="list-title">
    <span class="no">2028</span>
    <a class="thread-title" href="1968.html#2028">一点＆Coding Styleについて</a></div>
    </li></ul></li></ul></li></ul></li><li><div class="list-title">
    <span class="no">2029</span>
    <a class="thread-title" href="1968.html#2029">RE: WSH対応できるとハッピーですよね</a></div>
    <ul><li><div class="list-title">
    <span class="no">2030</span>
    <a class="thread-title" href="1968.html#2030">RE2: WSH対応できるとハッピーですよね</a></div>
    </li></ul></li><li><div class="list-title">
    <span class="no">2050</span>
    <a class="thread-title" href="1968.html#2050">Factoryの振舞いとレジストリ検索</a></div>
    <ul><li><div class="list-title">
    <span class="no">2053</span>
    <a class="thread-title" href="1968.html#2053">RE: Factoryの振舞いとレジストリ検索</a></div>
    <ul><li><div class="list-title">
    <span class="no">2056</span>
    <a class="thread-title" href="1968.html#2056">Re2: Factoryの振舞いとレジストリ検索</a></div>
    <ul><li><div class="list-title">
    <span class="no">2059</span>
    <a class="thread-title" href="1968.html#2059">Re3: Factoryの振舞いとレジストリ検索</a></div>
    <ul><li><div class="list-title">
    <span class="no">2060</span>
    <a class="thread-title" href="1968.html#2060">Re4: Factoryの振舞いとレジストリ検索</a></div>
    <ul><li><div class="list-title">
    <span class="no">2069</span>
    <a class="thread-title" href="1968.html#2069">Re5: Factoryの振舞いとレジストリ検索</a></div>
    </li><li><div class="list-title">
    <span class="no">2086</span>
    <a class="thread-title" href="1968.html#2086">Re5: Factoryの振舞いとレジストリ検索</a></div>
    <ul><li><div class="list-title">
    <span class="no">2089</span>
    <a class="thread-title" href="1968.html#2089">Re6: Factoryの振舞いとレジストリ検索</a></div>
    </li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li>
    </ul><ul class="main"><li><section><h1 id=1968>
    <span class="no">[1968]</span>
    <a class="thread-title" href="#1968">WSH対応できるとハッピーですよね</a>
    <span class="author">おに</span>
    <time datetime="2002-04-28T02:02:53">2002年04月28日 02:02</time></h1>
    <div class="body">(げんたさん) &gt; 複数マクロのサポートが望ましいと思います。<br>(やざきさん) &gt; 前に少し調べたけど手間がかかりそうでやめた経験アリです。<br><br>感じ、他に詳しくて暇な人が居そうに無いので、WSHをマクロとして使うためのクラスを書いてみました。<br>JavaScript, VBScript, ActivePythonで一応動いているように見えます。<br>何故かActiveScriptRubyでは動きません。<br>僕もそれほど詳しくはないので、何か致命的なミスとかあるかも知れません。<br>さらに必要な値の設定とかエラーチェックなんかをさぼりまくってますので不安定です。<br>それでも、いつかWSH対応なされるときの叩き台にはなると思います…。<br><br>&gt; object.in.registryの名前をレジストリに登録しなくてはならないと思うのですが<br><br>レジストリは使いません。<br><br><a href=http://www.egroups.co.jp/files/sakura-editor/Developer/Source/WSHHandler.lzh target=_top><nobr>http://<wbr>www.<wbr>egroups.<wbr>co.<wbr>jp/<wbr>files/<wbr>sakura-<wbr>editor/<wbr>Develope<wbr>r/<wbr>Source/<wbr>WSHHandl<wbr>er.<wbr>lzh</nobr></a></div></section>
    <ul><li><section><h1 id=1969>
    <span class="no">[1969]</span>
    <a class="thread-title" href="#1969">RE: WSH対応できるとハッピーですよね</a>
    <span class="author">やざき</span>
    <time datetime="2002-04-28T17:48:15">2002年04月28日 17:48</time></h1>
    <div class="body"><br>いいですねぇ。ぜひこのまま統合を進めていただきたい!!<br></div></section>
    <ul><li><section><h1 id=1976>
    <span class="no">[1976]</span>
    <a class="thread-title" href="#1976">Re2: WSH対応できるとハッピーですよね</a>
    <span class="author">おに</span>
    <time datetime="2002-04-29T05:03:17">2002年04月29日 05:03</time></h1>
    <div class="body">検索してみると…マクロってかなり広範囲に食い込んでいるのですね…<br>…CWSH.hをできるだけCPPA.hのインターフェースに近づけるようにしますから、統合は、サクラエディタの内部構造に詳しい人にお任せできないでしょうか？</div></section>
    <ul><li><section><h1 id=1977>
    <span class="no">[1977]</span>
    <a class="thread-title" href="#1977">Re3: WSH対応できるとハッピーですよね</a>
    <span class="author">やざき</span>
    <time datetime="2002-04-29T10:06:27">2002年04月29日 10:06</time></h1>
    <div class="body"><br>&gt;…CWSH.hをできるだけCPPA.hのインターフェースに近づけるようにしますから、統合は、サクラエディタの内部構造に詳しい人にお任せできないでしょうか？<br><br>「統合」がどの程度の知識等々が必要なのかわからないのでなんとも…。<br>S_InsText('あいうえお');<br>と<br>S_Char（98）<br>の2つだけでも対応してもらえれば、あとの拡張は引き受けられるかも。<br>内部構造でわからないことがあれば、どしどしお問い合わせくださいませ。<br>みんなで情報を出し合いましょ。<br></div></section>
    </li><li><section><h1 id=1978>
    <span class="no">[1978]</span>
    <a class="thread-title" href="#1978">複数マクロ</a>
    <span class="author">げんた</span>
    <time datetime="2002-04-29T17:46:00">2002年04月29日 17:46</time></h1>
    <div class="body">とりあえずは、<br>virtual void ExecKeyMacro( class CEditView* pcEditView ) const;<br>virtual BOOL LoadKeyMacro( HINSTANCE hInstance, const char* pszPath);<br>の二つをサポートした実行クラスさえ作ればあとは何とかなると思います。<br><br>現在複数マクロサポートのためにマクロ種別を管理するためのCMacroFactoryと、KeyMacroManagerのベースクラスのCMacroManagerBaseを作っております。<br></div></section>
    <ul><li><section><h1 id=1979>
    <span class="no">[1979]</span>
    <a class="thread-title" href="#1979">Re:複数マクロ</a>
    <span class="author">おに</span>
    <time datetime="2002-04-29T20:36:25">2002年04月29日 20:36</time></h1>
    <div class="body">えーと、CMacroManagerBaseで<br>&gt; virtual void ExecKeyMacro( class CEditView* pcEditView ) const;<br>&gt; virtual BOOL LoadKeyMacro( HINSTANCE hInstance, const char* pszPath);<br>が定義され、KeyMacroManagerやCPPAMacroMgr(そしてCWSHMacroManagerなど)がそれを継承し、上記メソッドをオーバーライドする。<br>CMacroFactoryは、マクロの種別(拡張子？)に応じて、適切な派生クラスを生成する。<br>という構造になる、という理解でよろしいですか？<br>何れにしろ管理クラスが完成するまで待たせていただきます。<br><br>あと、WSHの場合、<br>&gt; S_InsText('あいうえお');<br>&gt; S_Char(98);<br>では無く、オブジェクトとして渡すため、<br>Editor.InsText('あいうえお');<br>Editor.Char(98);<br>みたいな構文になると思います。(これはJavaScriptの場合)<br>…WSHに渡すオブジェクトの名前はどうしましょう。"Sakura"の方がそれらしいかな？</div></section>
    <ul><li><section><h1 id=1981>
    <span class="no">[1981]</span>
    <a class="thread-title" href="#1981">Re2:複数マクロ</a>
    <span class="author">げんた</span>
    <time datetime="2002-04-30T02:03:39">2002年04月30日 02:03</time></h1>
    <div class="body">▼ おにさん<br>&gt; えーと、CMacroManagerBaseで<br>&gt; &gt; ExecKeyMacro, LoadKeyMacro が定義され、KeyMacroManagerやCPPAMacroMgr(そしてCWSHMacroManagerなど)がそれを継承し、上記メソッドをオーバーライドする。<br>MultiMacro_020427.zipをUPしました。<br>4/27付けソースとファイルを置き換えてください。<br><br>&gt; CMacroFactoryは、マクロの種別(拡張子？)に応じて、適切な派生クラスを生成する。<br>マクロ種別をどうやって判定するかがまだちゃんと考えられていないのですが、暫定的に1行目を渡すように作ってみました。<br>1行目が//で始まっていたら標準マクロ、1行目にPPAという文字があったらPPAマクロです。<br><br>CMacroFactoryのRegisterに判定関数を始めに渡しておきます。マクロ実行時には判定関数が1行目の内容を引数にして順に呼ばれます。自分が実行可能なマクロだと判定したら実行用オブジェクトを、自分とは関係なければNULLを返します。<br><br>CMacroFactoryと各Macroを分離するために自己登録形式にしたのに、結局CSMacroManagerで全部登録しているのであまり意味がなかったかも...<br><br>あと、コマンド名の先頭にS_が付くのはPPA以外ではあまり意味がないので、WSHではS_無しのほうが良いと思います。<br>標準マクロもS_有りでも無しでも認識するようにしたいと思っています。</div></section>
    <ul><li><section><h1 id=1983>
    <span class="no">[1983]</span>
    <a class="thread-title" href="#1983">Re3:複数マクロ</a>
    <span class="author">おに</span>
    <time datetime="2002-04-30T03:05:28">2002年04月30日 03:05</time></h1>
    <div class="body">&gt; 1行目が//で始まっていたら標準マクロ、1行目にPPAという文字があったらPPAマクロです。<br>WSHの場合は…どうしましょう？1行目にコメントで埋めこむことにして<br>//WSH:JavaScript<br>'WSH:VBScript<br>#WSH:Python<br>という感じでいいですか？<br>WSHの場合拡張子からエンジンが判別できますので、ファイル名から判別する方がスマートな気もしますが、マクロファイルは*.mac決め打ちということであれば、1行目を使うしか無いかも知れません。<br>(*.wsfの様にXMLで埋めこむ方式も考えられますが…肥大化を招きそう)<br><br>あと、MacroFuncInfo, MacroFuncInfoNotCommandが格納している引数と戻り値の情報がPascal構文なので、型を意味する値の配列にしていただけませんか？<br>バリアント型で使われるVT_で始まる値だったりするとWSHの場合そのまま使えて嬉しいです。<br>↓こんな感じで、CPPA.cppではこれをPascalの宣言に直してPPAに渡す、という事で…。<br><br>struct MacroFuncInfo <br>{<br>  int m_nFuncID;<br>  char *m_pszFuncName;<br>  VARTYPE m_Arguments[8]; //引数の型の配列<br>  int m_ArgumentCount; //引数の数<br>  VARTYPE m_Result; //戻り値の型 VT_EMPTYならprocedureということで<br>  char *m_pszData;<br>};<br></div></section>
    <ul><li><section><h1 id=1984>
    <span class="no">[1984]</span>
    <a class="thread-title" href="#1984">Re4:複数マクロ</a>
    <span class="author">げんた</span>
    <time datetime="2002-04-30T03:45:58">2002年04月30日 03:45</time></h1>
    <div class="body">▼ おにさん<br>&gt; &gt; 1行目が//で始まっていたら標準マクロ、1行目にPPAという文字があったらPPAマクロです。<br>&gt; WSHの場合は…どうしましょう？<br>拡張子で判別する方がやっぱり自然かな。拡張子が普通のWSHと同じでも実際にはsakuraから呼び出した場合じゃないとオブジェクトがないのでうまく動かない点がちょっと気になりますが。<br>登録するときに拡張子も渡すことにして、Factoryで拡張子を見てオブジェクトタイプを決める方がオーバーヘッドは少ない。いちいちファイルを開かなくても済みますし。<br>そうすると、マクロ選択ダイアログで拡張子でフィルタしているところも変えないといけませんね。<br><br>&gt; あと、MacroFuncInfo, MacroFuncInfoNotCommandが格納している引数と戻り値の情報がPascal構文なので、型を意味する値の配列にしていただけませんか？<br>&gt; バリアント型で使われるVT_で始まる値だったりするとWSHの場合そのまま使えて嬉しいです。<br>&gt; CPPA.cppではこれをPascalの宣言に直してPPAに渡す、という事で…。<br>変更はご自由にどうぞ (^^)。<br></div></section>
    </li><li><section><h1 id=1987>
    <span class="no">[1987]</span>
    <a class="thread-title" href="#1987">Re4:複数マクロ</a>
    <span class="author">やざき</span>
    <time datetime="2002-04-30T14:35:25">2002年04月30日 14:35</time></h1>
    <div class="body"><br>ではでは、拡張子で判別するように修正お願いできますか？ &gt; げんたさん<br>標準は.mac<br>PPAは.ppa<br>でいいと思います。<br><br><br>&gt;struct MacroFuncInfo <br>&gt;{<br>&gt;  int m_nFuncID;<br>&gt;  char *m_pszFuncName;<br>&gt;  VARTYPE m_Arguments[8]; //引数の型の配列<br>&gt;  int m_ArgumentCount; //引数の数<br>&gt;  VARTYPE m_Result; //戻り値の型 VT_EMPTYならprocedureということで<br>&gt;  char *m_pszData;<br>&gt;};<br><br>これは私のほうで直してみます。<br><br>とりあえず、拡張子で判別＆MacroFuncInfoの修正までやって、出しなおします。<br>よろしくー。<br></div></section>
    <ul><li><section><h1 id=1993>
    <span class="no">[1993]</span>
    <a class="thread-title" href="#1993">Re5:複数マクロ</a>
    <span class="author">おに</span>
    <time datetime="2002-04-30T22:57:05">2002年04月30日 22:57</time></h1>
    <div class="body">&gt;これは私のほうで直してみます。<br>お願いします。^^<br><br>&gt;拡張子で判別<br>WSHの場合、<br>　HKEY_CLASSES_ROOT\(HKEY_CLASSES_ROOT\(拡張子)の値)\ScriptEngineの値<br>が存在すればそれをエンジン名にして、CWSHMacroManagerのコンストラクタに渡すCreatorを書く、という感じでしょうか。<br>マイナーなエンジンも多数あるので、*.js/*.vbs/*.py「だけ」とか決め打ちはやらないで欲しいです。<br>すでに承知のことであれば、ご容赦を。</div></section>
    </li><li><section><h1 id=1995>
    <span class="no">[1995]</span>
    <a class="thread-title" href="#1995">Re5:複数マクロ</a>
    <span class="author">やざき</span>
    <time datetime="2002-05-01T00:30:20">2002年05月01日 00:30</time></h1>
    <div class="body"><br>&gt;&gt;struct MacroFuncInfo <br>&gt;&gt;{<br>&gt;&gt;  int m_nFuncID;<br>&gt;&gt;  char *m_pszFuncName;<br>&gt;&gt;  VARTYPE m_Arguments[8]; //引数の型の配列<br>&gt;&gt;  int m_ArgumentCount; //引数の数<br>&gt;&gt;  VARTYPE m_Result; //戻り値の型 VT_EMPTYならprocedureということで<br>&gt;&gt;  char *m_pszData;<br>&gt;&gt;};<br>&gt;<br>&gt;これは私のほうで直してみます。<br><br>直しました。<br>m_Arguments[4]にして、m_ArgumentCountを削除しました。<br>m_ArgumentCountは、m_Argumentsを走査して、VT_EMPTYが来るまで数えればいいかと思ったので。<br><br>&gt;<br>&gt;とりあえず、拡張子で判別＆MacroFuncInfoの修正までやって、出しなおします。<br>&gt;よろしくー。<br><br>あとはげんたさん作の複数マクロパッチをあてれば出せるよう。拡張子判別の件って、げんたさんどう？<br></div></section>
    </li><li><section><h1 id=1996>
    <span class="no">[1996]</span>
    <a class="thread-title" href="#1996">拡張子別マクロ</a>
    <span class="author">げんた</span>
    <time datetime="2002-05-01T02:45:44">2002年05月01日 02:45</time></h1>
    <div class="body">▼ やざきさん<br>&gt; ではでは、拡張子で判別するように修正お願いできますか？ &gt; げんたさん<br>&gt; 標準は.mac<br>&gt; PPAは.ppa<br>&gt; でいいと思います。<br>MultiMacro2.zipをUPしました。<br>CMacroFactory::Register/Unregisterの引数を変更しました。また、それにあわせてあちこち変更しました。<br>CMacroManagerBaseにデストラクタを追加しました。<br>CSMacroManagerで1行目を渡すところを拡張子を渡すように変更しました。<br><br>直してないところ<br>* 共通設定－マクロでは相変わらず.macしか候補に出ない<br>* S_がリストから削除されたのに伴って、S_の判定をCMacroに追加しないと従来のマクロが実行できなくなる。<br></div></section>
    <ul><li><section><h1 id=1997>
    <span class="no">[1997]</span>
    <a class="thread-title" href="#1997">RE: 拡張子別マクロ</a>
    <span class="author">やざき</span>
    <time datetime="2002-05-01T10:40:41">2002年05月01日 10:40</time></h1>
    <div class="body"><br>&gt;MultiMacro2.zipをUPしました。<br><br>ありがとう!<br>夜中まで作業してもらったようで申し訳ない。<br></div></section>
    </li></ul></li></ul></li></ul></li><li><section><h1 id=1985>
    <span class="no">[1985]</span>
    <a class="thread-title" href="#1985">Re3:複数マクロ</a>
    <span class="author">げんた</span>
    <time datetime="2002-04-30T04:23:24">2002年04月30日 04:23</time></h1>
    <div class="body">すいません。<br>CMacroManagerBaseでデストラクタをvirtualで宣言するのを忘れていました。<br></div></section>
    </li><li><section><h1 id=1994>
    <span class="no">[1994]</span>
    <a class="thread-title" href="#1994">Re3:複数マクロ</a>
    <span class="author">やざき</span>
    <time datetime="2002-04-30T23:16:29">2002年04月30日 23:16</time></h1>
    <div class="body"><br>&gt;あと、コマンド名の先頭にS_が付くのはPPA以外ではあまり意味がないので、WSHではS_無しのほうが良いと思います。<br>&gt;標準マクロもS_有りでも無しでも認識するようにしたいと思っています。<br><br>ということなので、CSMacroMgr::MacroFuncInfo CSMacroMgr::m_MacroFuncInfoArr[]などでは、S_を含めないで定義するようにします。<br>PPAと標準マクロでは、適宜追加ということで。<br></div></section>
    </li></ul></li></ul></li></ul></li></ul></li></ul></li><li><section><h1 id=2015>
    <span class="no">[2015]</span>
    <a class="thread-title" href="#2015">様子見…</a>
    <span class="author">おに</span>
    <time datetime="2002-05-03T12:32:36">2002年05月03日 12:32</time></h1>
    <div class="body">さすがゴールデンウィーク。誰もいませんね…。(いいことかも)<br><br><a href=http://www.egroups.co.jp/files/sakura-editor/Developer/Source/WSHHandler2.lzh target=_top><nobr>http://<wbr>www.<wbr>egroups.<wbr>co.<wbr>jp/<wbr>files/<wbr>sakura-<wbr>editor/<wbr>Develope<wbr>r/<wbr>Source/<wbr>WSHHandl<wbr>er2.<wbr>lzh</nobr></a><br><br>まだ動作しませんが、sakura.exeにリンクできる形に持っていったのであげておきます。<br>こうした方がいいとかあれば是非アドバイスを。</div></section>
    <ul><li><section><h1 id=2018>
    <span class="no">[2018]</span>
    <a class="thread-title" href="#2018">Re: 様子見…</a>
    <span class="author">げんた</span>
    <time datetime="2002-05-04T02:00:39">2002年05月04日 02:00</time></h1>
    <div class="body">&gt;さすがゴールデンウィーク。誰もいませんね…。(いいことかも)<br>帰省先からDial UpでとりあえずGET!<br></div></section>
    <ul><li><section><h1 id=2020>
    <span class="no">[2020]</span>
    <a class="thread-title" href="#2020">WSHの質問など(2)</a>
    <span class="author">げんた</span>
    <time datetime="2002-05-04T06:26:39">2002年05月04日 06:26</time></h1>
    <div class="body">&gt; m_MacroFuncInfoArr<br>0で終端しているのですが、結局は固定の配列なのでAddEntryする前にsizeofでreserve()しておくことで領域拡張の回数を減らせます。<br><br>&gt; CWSHMacroManager::LoadKeyMacro<br>ReadFileのエラーチェックを行った方が良いのでは？<br><br>&gt; CInterfaceObject::GetIDsOfNames<br>これはsakuraのメソッドをたたくたびに呼ばれるんでしょうか。だとすると線形探索では効率悪そう。(ってそれはPPAも一緒か？)<br><br>&gt; CWSHMacroManager::ExecKeyMacro<br>毎回CWSHClientを作ってReadyCommandsを呼び出していますが、Loadするときだけオブジェクトを作るか作ったオブジェクトをキャッシュするかする方が良いのでは？スクリプトが非同期に沢山走るならオブジェクトを動的に作るしか手がないのかもしれないけど、ここでは順番にしか実行されませんし。せめて関数一覧くらい再利用したいような...。<br><br>---<br>最後にWSHの一般的な質問です。<br>1) エディタの情報を返すためにオブジェクトを返すことってできるのでしょうか。<br><br>例えば、<br>view = Sakura.GetView(1);<br>x = view.posx;<br>view.MoveCursor(0,0);<br>doc = view.getdoc();<br>mark_count = doc.MarkCount();<br>みたいなことって実現可能ですか？<br><br>2) WSHは本当にWin95で使えないんですか？<br></div></section>
    </li></ul></li><li><section><h1 id=2019>
    <span class="no">[2019]</span>
    <a class="thread-title" href="#2019">WSHの質問など(1)</a>
    <span class="author">げんた</span>
    <time datetime="2002-05-04T06:26:38">2002年05月04日 06:26</time></h1>
    <div class="body">&gt;こうした方がいいとかあれば是非アドバイスを。<br>いろいろと手厳しい指摘どうもです。<br><br>&gt; #include &lt;initguid.h&gt;<br>&gt; #include "activscp.h"<br>&gt; //↑Microsoft Platform SDK より<br>これはPlatform SDKをインストールしないとコンパイルできないということですか？<br><br>&gt; #include "shlwapi.h"<br>&gt; //98laterではありますがそれを言ったらWSHも同じなので…<br>実行はWindows 95でも問題ないんでしょうか。Win95で起動できないとかいうのは困りますんで。<br><br>&gt; 折角のCreatorなんですからここで拡張子を渡す意味は無いように思えます<br>&gt; というかこのままだと未知のエンジンに対応できないし(レジストリ全検索すれば別ですが)<br>&gt; Createorが拡張子を見てFactoryは非NULLが返るまで全てのCreatorを呼ぶのがベストかと…<br>拡張子の一覧が先に取得できるという前提で作ってみたのですが、やはりCreatorは全部呼び出しの方がいいですか。<br><br>拡張子を登録→登録された拡張子だけがマクロ登録画面で候補に出るという使い方を考えていたのですが、確かにレジストリ全検索は効率悪いですよね。<br><br>&gt; 戻り値voidってことはエラー報告機構が無いのですか？…ってことで勝手に表示<br>現在のマクロは勝手にダイアログでエラー表示します。<br>標準マクロは引数が足りないとアプリケーションエラーになります。(^^;)(そのうち直す予定。これを直せばマクロ互換性問題の決着がつく。)<br><br>エラー情報を戻すことでうまい使い方ができるのであればそのように直すのも良いと思います。<br><br>&gt; MacroCommand<br>CMacroでは引数を文字列で扱っていますが、既に数値で取得できているものをまた文字列にして渡すのは無駄っぽい。<br>char*もintもLPARAM型にキャストしてCEditView::HandleCommandに直接渡しても良いと思います。<br><br>この関数内で<br>&gt;&gt; VT_INT:<br>&gt;&gt; VT_UINT:<br>&gt;&gt; VT_BSTR:<br>↑"case" を忘れてませんか？<br><br>&gt;&gt;   int Len = SysStringLen(Arguments-&gt;rgvarg[I].bstrVa<br>l);<br>&gt;&gt;   S = new char[Len * 2];<br>↑ [(Len+1)*2] じゃなくていいの？<br><br>&gt; m_InterfaceObject<br>IDispatchとして宣言して使うときにCInterfaceObjectにdynamic castしていますが、はじめからCInterfaceObject型としておくと問題があるのでしょうか。<br><br>初期化時は<br>m_InterfaceObject = new CInterfaceObject();<br>m_InterfaceObject-&gt;AddRef();<br>なのに解放時は<br>if(m_InterfaceObject != NULL)<br>    m_InterfaceObject-&gt;Release();<br>で、newに対応するdeleteが無いように見えます。<br></div></section>
    <ul><li><section><h1 id=2021>
    <span class="no">[2021]</span>
    <a class="thread-title" href="#2021">Re:WSHの質問など(1&amp;2)</a>
    <span class="author">おに</span>
    <time datetime="2002-05-04T15:58:48">2002年05月04日 15:58</time></h1>
    <div class="body">&gt; Platform SDKをインストールしないとコンパイルできないということですか？<br>activscp.hがbcc32に無いので、SDKから持って来ました。VC++ならあると思います。<br><br>&gt; &gt; #include "shlwapi.h"<br>&gt; 実行はWindows 95でも問題ないんでしょうか。Win95で起動できないとかいうのは困りますんで。<br>…白状すればレジストリを楽に読むための手抜きです。<br>恐らく素の95では動かない(未確認。IEが入っていれば別かも)ので、直す必要ありです…。<br><br>&gt; 拡張子を登録→登録された拡張子だけがマクロ登録画面で候補に出るという使い方を考えていたのですが、確かにレジストリ全検索は効率悪いですよね。<br>毎回全検索は問題外として、絞れるならその方がいいと思います。<br>しかし…「現在使えるスクリプトエンジンの一覧を取得し直す」みたいなボタンを設定ダイアログでユーザーに押してもらって、そこで全検索というのも…手間と効率を考えると。どう思われますか？<br><br>エラーは勝手に表示して良かったみたいですね。一安心。<br><br>&gt; &gt; MacroCommand<br>&gt; char*もintもLPARAM型にキャストしてCEditView::HandleCommandに直接渡しても良いと思います。<br>あ、それは見つけてませんでした。CPPAを参考に書いていましたので。<br>そうします。<br><br>&gt; ↑"case" を忘れてませんか？<br>…はい。(よくPascalのcaseと混同します。エラーにならないのが尚更^^;)<br><br>&gt; ↑ [(Len+1)*2] じゃなくていいの？<br>bstrは\0を持たないVB文字列で、また、WideCharToMultiByteで長さを明示しているので不要…え!?<br>…はい、Len*2+1です。<br><br>&gt; IDispatchとして宣言して使うときにCInterfaceObjectにdynamic castしていますが、はじめからCInterfaceObject型としておくと問題があるのでしょうか。<br>…色々いじっているときに.hと.cppの両方を直すのは手間なので…それだけ。<br><br>&gt; 初期化時は<br>&gt; m_InterfaceObject = new CInterfaceObject();<br>&gt; m_InterfaceObject-&gt;AddRef();<br>&gt; なのに解放時は<br>&gt; if(m_InterfaceObject != NULL)<br>&gt;     m_InterfaceObject-&gt;Release();<br>&gt; で、newに対応するdeleteが無いように見えます。<br>Releaseの中で自殺するのがCOMオブジェクト…と思いこんでいたのですが改めて見てみたらCYbInterfaceImplがそうなっていません…。<br>直します。<br><br>&gt;&gt; m_MacroFuncInfoArr<br>&gt; 0で終端しているのですが、結局は固定の配列なのでAddEntryする前にsizeofでreserve()しておくことで領域拡張の回数を減らせます。<br>あ、はい。(←STL無知)<br><br>&gt;ReadFileのエラーチェックを行った方が良いのでは？<br>上書き禁止して取得したサイズで直後に読んでいるのでいいかな…とか思っていたのですが、やっぱ必要ですか…。<br>失敗するってどういう状態…クラスタが壊れて読めなかったとか？<br><br>GetIDsOfNamesは、ITypeInfoを使うエンジン(Pythonとか)では呼ばれません。それ以外の場合は…エンジンがキャッシュしてくれればと期待しつつ(未確認)…やはりハッシュを作った方がいいでしょうか。<br><br>言われてみると手抜き＆確認さぼりが見事なまでに露見してます…。<br>帰省中にも関らず、詳細なアドバイスをありがとうございました。<br><br>質問のほうは、<br>1) 可能です。<br>2) MicrosoftのサイトにWindows 98, NT4 &amp; 2000, Windows Me という記述があります。(でもIEは95で動くので古いバージョンなら…?)</div></section>
    </li></ul></li></ul></li><li><section><h1 id=2022>
    <span class="no">[2022]</span>
    <a class="thread-title" href="#2022">動作記念</a>
    <span class="author">おに</span>
    <time datetime="2002-05-05T07:26:26">2002年05月05日 07:26</time></h1>
    <div class="body">Editor.InsText("123")が動作しましたので動作記念にあげておきます。<br>結局動かなかったのはcase書き忘れが原因か…。<br>どれが動いてどれが動かない、というのは未検証です。<br><br><a href=http://www.egroups.co.jp/files/sakura-editor/Developer/Source/WSHHandler3.lzh target=_top><nobr>http://<wbr>www.<wbr>egroups.<wbr>co.<wbr>jp/<wbr>files/<wbr>sakura-<wbr>editor/<wbr>Develope<wbr>r/<wbr>Source/<wbr>WSHHandl<wbr>er3.<wbr>lzh</nobr></a><br><br>指摘された問題点はまだ大半が未解決です。<br>一応CWSH.hにTODOとして書き並べておきました。<br>(直すことができる方は直して下さればありがたいのですが…とか書いてみる^^)<br><br>----修正追記----<br>すいません。デストラクタを忘れていました。<br>virtual ~ImplementsIUnknown(){};</div></section>
    <ul><li><section><h1 id=2023>
    <span class="no">[2023]</span>
    <a class="thread-title" href="#2023">RE: 動作記念</a>
    <span class="author">みく</span>
    <time datetime="2002-05-05T19:46:56">2002年05月05日 19:46</time></h1>
    <div class="body"><br>VCでコンパイルできませんので、エラーを書いておきます。<br><br>CWSH.h<br>#include &lt;objbase.h&gt;&#9;//initguid.hの前に必要<br>#include &lt;initguid.h&gt;<br><br>CWSH.cpp<br>cwsh.cpp(451) : error C2143: 構文エラー : ';' が '}' の前に必要です。<br>cwsh.cpp(535) : warning C4541: 'dynamic_cast' が /GR- を使用したポリモーフィック型 'struct IDispatch' で使用されています; 動作結果は保証されません。<br>cwsh.cpp(602) : error C2374: 'I' : 再定義されています。2 回以上初期化されています。<br>cwsh.cpp(563) : 'I' の宣言を確認してください。<br>cwsh.cpp(603) : error C2665: 'delete' : 2 のオーバーロードは 1 番目の引数を 'const char *' から要求の型に変換できません。(新しい機能 ; ヘルプを参照)<br>cwsh.cpp(684) : error C2065: 'SHRegGetPathW' : 定義されていない識別子です。<br><br><br>451: ラベル "Found:" の後ろに ";" を付ける。→ "Found:;"<br># ラベルの後に文がなくて括弧を閉じてしまうと駄目<br><br>563,602: 変数の定義をfor文でしては駄目<br><br>684: "最新"のSDKが必要です(VC標準のshlwapi.hには定義なし)。<br>IE5以降がインストールされてなければW95だけでなくNT4でも動きません。<br>shlwapiを使わないサンプルを egroups/source/EnumScriptEngine.zipに置きました。<br><br>参考：<br>SHRegGetPathW<br><br>Requirements <br>  Version 5.00 and later of Shlwapi.dll<br><br>  Windows NT/2000: Requires Windows 2000 (or Windows NT 4.0 with Internet Explorer 5.0 or later). <br>  Windows 95/98: Requires Windows 98 (or Windows 95 with Internet Explorer 5.0 or later). <br>  Header: Declared in shlwapi.h. <br>  Import Library: shlwapi.lib.<br></div></section>
    <ul><li><section><h1 id=2024>
    <span class="no">[2024]</span>
    <a class="thread-title" href="#2024">Re2: 動作記念</a>
    <span class="author">おに</span>
    <time datetime="2002-05-06T10:42:00">2002年05月06日 10:42</time></h1>
    <div class="body">みくさん、サンプルまでいただいてありがとうございます。<br>修正したつもりです。<br><a href=http://www.egroups.co.jp/files/sakura-editor/Developer/Source/WSHHandler4.lzh target=_top><nobr>http://<wbr>www.<wbr>egroups.<wbr>co.<wbr>jp/<wbr>files/<wbr>sakura-<wbr>editor/<wbr>Develope<wbr>r/<wbr>Source/<wbr>WSHHandl<wbr>er4.<wbr>lzh</nobr></a><br><br>&gt; 563,602: 変数の定義をfor文でしては駄目<br>とりあえずふたつめのforの変数をJにしておきました。<br><br>shlwapiは、いただいたサンプルを参考にしてSHRegGetPathA相当のReadRegistryを書いてそれに置き換えました。<br>ですのでもう95でも動く…かな？(手元に2000マシンしか無いので試してません。他に何気なく使っているAPIがあるかも知れません)<br><br>他に、<br>・例外をthrowしていた部分をコールバックに直しました。<br>・CInterfaceObjectの宣言をCWSH.hに移動しました。(dynamic_castの使用を避けるため)<br><br>みくさんのサンプルを走らせて気付いたこと<br>・Rubyは"RubyScript"では無く"GlobalRubyScript"でした。("RubyScript"はIE用？)　最初にあげたコードで"GlobalRubyScript"に直したら動作しました。<br>・レジストリを全検索してスクリプトエンジンを列挙してもそれほど時間はかからないみたいですが、どうしましょう？(でも動作速度はマシン依存率が高いかも)</div></section>
    <ul><li><section><h1 id=2025>
    <span class="no">[2025]</span>
    <a class="thread-title" href="#2025">Re3: 動作記念</a>
    <span class="author">みく</span>
    <time datetime="2002-05-06T12:43:30">2002年05月06日 12:43</time></h1>
    <div class="body"><br>あと少し。<br><br>CWSH.cpp(552) : error C2665: 'delete' : 2 のオーバーロードは 1 番目の引数を 'const char *' から要求の型に変換できません。(新しい機能 ; ヘルプを参照)<br>CWSH.cpp(582) : error C2664: 'RegQueryValueExA' : 5 番目の引数を 'char *' から 'unsigned char *' に変換できません。 (新しい機能 ; ヘルプを参照)<br><br>552:<br>delete しようとする変数が const なのでエラーになります。<br>#const char* はポインタは変数だけど、そのポインタの指す値は定数<br><br>582:<br>第5引数を unsigned char* でキャストしてください。<br></div></section>
    <ul><li><section><h1 id=2026>
    <span class="no">[2026]</span>
    <a class="thread-title" href="#2026">Re4: 動作記念</a>
    <span class="author">おに</span>
    <time datetime="2002-05-06T16:49:17">2002年05月06日 16:49</time></h1>
    <div class="body">どうもです。<br><br>・511行のconstを消してchar *StrArgs[4];にしてください。<br>・549行のStrArgsをconst_cast&lt;char const **&gt;(StrArgs)に置き換えて下さい。<br>・582行のBufferをreinterpret_cast&lt;unsigned char*&gt;(Buffer)に置き換えて下さい。<br><br>ところで、InsTextだけのマクロ(VBScript)を実行後、カーソルの点滅位置が移動していないような気が。<br>続けて入力してみると、きちんとカーソルそのものは移動しているようです。<br>何が原因でしょう…。</div></section>
    <ul><li><section><h1 id=2027>
    <span class="no">[2027]</span>
    <a class="thread-title" href="#2027">Re5: 動作記念</a>
    <span class="author">やざき</span>
    <time datetime="2002-05-06T17:10:29">2002年05月06日 17:10</time></h1>
    <div class="body"><br>&gt;ところで、InsTextだけのマクロ(VBScript)を実行後、カーソルの点滅位置が移動していないような気が。<br>&gt;続けて入力してみると、きちんとカーソルそのものは移動しているようです。<br>&gt;何が原因でしょう…。<br><br>CEditView::Redraw()を呼べばいいかも。でも呼びすぎるとちらついているぜ!!とか文句言われるかも。<br></div></section>
    <ul><li><section><h1 id=2031>
    <span class="no">[2031]</span>
    <a class="thread-title" href="#2031">Re6: 動作記念</a>
    <span class="author">おに</span>
    <time datetime="2002-05-08T07:29:29">2002年05月08日 07:29</time></h1>
    <div class="body">&gt; CEditView::Redraw()を呼べばいいかも。<br><br>623行に、<br><br>Engine-&gt;Execute(m_Source.c_str());<br>EditView-&gt;Redraw();<br><br>と、してみたのですが、駄目でした。</div></section>
    <ul><li><section><h1 id=2039>
    <span class="no">[2039]</span>
    <a class="thread-title" href="#2039">Re7: 動作記念</a>
    <span class="author">おに</span>
    <time datetime="2002-05-10T12:38:31">2002年05月10日 12:38</time></h1>
    <div class="body">RedrawAllを呼ぶときちんとカーソル位置が反映されました。<br>Executeしている行(623)の次に挿入して下さい。<br><br>Engine-&gt;Execute(m_Source.c_str());<br>EditView-&gt;RedrawAll(); /*この行*/<br></div></section>
    </li></ul></li></ul></li></ul></li></ul></li><li><section><h1 id=2028>
    <span class="no">[2028]</span>
    <a class="thread-title" href="#2028">一点＆Coding Styleについて</a>
    <span class="author">げんた</span>
    <time datetime="2002-05-07T02:39:36">2002年05月07日 02:39</time></h1>
    <div class="body">一点気づいたのでコメント。<br>&gt; CWSHClient::CWSHClient<br>m_OnErrorのNULLチェックをしてないのは危険だと思う。OnScriptErrorではNULLチェックしてるのに。<br><br>---<br>みくさん、おにさんのコードを見て100人100様だなぁと感じてます。<br>括弧の始まりの位置とか、変数名の付け方とか、ZeroMemoryかmemsetかとか、unsigned intのintを省略するところとか、<br>おにさんの1文字変数名に大文字を使う流儀は初めて見ました。<br></div></section>
    </li></ul></li></ul></li></ul></li><li><section><h1 id=2029>
    <span class="no">[2029]</span>
    <a class="thread-title" href="#2029">RE: WSH対応できるとハッピーですよね</a>
    <span class="author">やざき</span>
    <time datetime="2002-05-07T19:05:38">2002年05月07日 19:05</time></h1>
    <div class="body"><br>そろそろ、新しいお試し版を出そうと思うのですが、WSHの件はどうしましょう？？<br>WSH.cpp、WSH.h以外にも修正が必要ですよね？パッチを希望!（甘えすぎ？）<br><br>それとも、WSHはまだ混ぜないでおきます？<br></div></section>
    <ul><li><section><h1 id=2030>
    <span class="no">[2030]</span>
    <a class="thread-title" href="#2030">RE2: WSH対応できるとハッピーですよね</a>
    <span class="author">げんた</span>
    <time datetime="2002-05-08T00:08:35">2002年05月08日 00:08</time></h1>
    <div class="body">&gt;そろそろ、新しいお試し版を出そうと思うのですが、WSHの件はどうしましょう？？<br>CMacroFactoryと各MacroManagerとのインターフェースをもう少し考えた方がいいので、とりあえずはメインには混ぜない方が良いと思います。<br><br>機能だけを試して貰うために、別途WSHテスト版withバイナリを出せるならそれはそれで良いと思いますが。<br><br>あと、WSHではPPAやキーボードマクロと違ってオブジェクトを扱うことができるので、単にメソッドを移植するのではなくオブジェクト構造をどう見せるかなどについても議論があっても良いのではないでしょうか。<br></div></section>
    </li></ul></li><li><section><h1 id=2050>
    <span class="no">[2050]</span>
    <a class="thread-title" href="#2050">Factoryの振舞いとレジストリ検索</a>
    <span class="author">おに</span>
    <time datetime="2002-05-13T08:06:21">2002年05月13日 08:06</time></h1>
    <div class="body">05-12版は折り返し線に穴が空かなくなって嬉しいです。<br><br><a href=http://www.egroups.co.jp/files/sakura-editor/Developer/Source/WSHHandler5.lzh target=_top><nobr>http://<wbr>www.<wbr>egroups.<wbr>co.<wbr>jp/<wbr>files/<wbr>sakura-<wbr>editor/<wbr>Develope<wbr>r/<wbr>Source/<wbr>WSHHandl<wbr>er5.<wbr>lzh</nobr></a><br><br>これまでに出た細かい修正を適用した版(全部ではありませんが…)です。<br>CEditView::ShowEditCaretをpublic:に移動して、CSMacroMgr.cppの300行ぐらいにCWSHMacroManager::declare();と書き足せば動作できます。<br><br>▼やざきさん<br>&gt;WSHの件は、議論する必要があるなら、議題を出して欲しいかも。<br><br>残る議題は↓のどちらを採用するか、と思われます。(勝手にまとめてみました)<br>・CMacroFactoryに拡張子とCreaterをペアで登録する(現状)ばあい、インストール済みの全てのスクリプトエンジンを有効にするにはレジストリを検索する必要がある。予め拡張子のリストが手に入るのでダイアログなどでフィルタをかけることができる。<br>・各Createrで自分の処理できる拡張子を判別するようにしてFactoryはCreaterを順に呼んでNULL以外が返ればそれを使うようにすればレジストリ検索の必要は無い。ダイアログでは*.*を使う。<br><br>std::mapでGetIDsOfNameが最適化できそう(僕がSTLに疎いため避けているm(__)m)等細かい課題もありますし、実際動かして動かないコマンドも出てくると思いますが、そういったのは対処療法でいいかと…。</div></section>
    <ul><li><section><h1 id=2053>
    <span class="no">[2053]</span>
    <a class="thread-title" href="#2053">RE: Factoryの振舞いとレジストリ検索</a>
    <span class="author">やざき</span>
    <time datetime="2002-05-13T14:36:43">2002年05月13日 14:36</time></h1>
    <div class="body">&gt;タイトル: RE: Factoryの振舞いとレジストリ検索<br>&gt;発言者: おに<br>&gt;05-12版は折り返し線に穴が空かなくなって嬉しいです。<br><br>でも選択範囲の描画がメタメタです（すみません）<br><br>新しいの試してみますぅ。Thanx!<br><br>&gt;▼やざきさん<br>&gt;&gt;WSHの件は、議論する必要があるなら、議題を出して欲しいかも。<br>&gt;<br>&gt;残る議題は↓のどちらを採用するか、と思われます。(勝手にまとめてみました)<br>&gt;・CMacroFactoryに拡張子とCreaterをペアで登録する(現状)ばあい、インストール済みの全てのスクリプトエンジンを有効にするにはレジストリを検索する必要がある。予め拡張子のリストが手に入るのでダイアログなどでフィルタをかけることができる。<br>&gt;・各Createrで自分の処理できる拡張子を判別するようにしてFactoryはCreaterを順に呼んでNULL以外が返ればそれを使うようにすればレジストリ検索の必要は無い。ダイアログでは*.*を使う。<br><br>ダイアログなどでフィルタをかけられるなら、そのほうが便利かな？<br>ということで、iniファイルが無いときは、起動時にレジストリを検索するのはどうでしょう？<br>iniファイルがあるときは、［ツール］→［共通設定］→［マクロ］にボタンを追加したりして、レジストリを再検索できるようにしたらしたらどうかしら？<br></div></section>
    <ul><li><section><h1 id=2056>
    <span class="no">[2056]</span>
    <a class="thread-title" href="#2056">Re2: Factoryの振舞いとレジストリ検索</a>
    <span class="author">げんた</span>
    <time datetime="2002-05-14T00:33:41">2002年05月14日 00:33</time></h1>
    <div class="body">&gt;ダイアログなどでフィルタをかけられるなら、そのほうが便利かな？<br>&gt;ということで、iniファイルが無いときは、起動時にレジストリを検索するのはどうでしょう？<br>&gt;iniファイルがあるときは、［ツール］→［共通設定］→［マクロ］にボタンを追加したりして、レジストリを再検索できるようにしたらしたらどうかしら？<br>アイディアは良いと思いますが<br>* 拡張子scanはWSH Engineのdeclareで行うしか無いと思うが、iniファイルの有無をどうやって知らせたらよいのか。<br>* WSH Managerが直接CShareDataにアクセスするのは嫌だ。<br>* 再検索アクションでCMacroFactoryが行うべき動作は？<br>と気になりました。<br><br>各マネージャがCShareDataにアクセスせず、追加されるボタンが公正な動作をするための実装案です。<br>・CMacroFactoryが拡張子←→Engine名の対応表iniへの記録に責任を持つ。<br>・CMacroFactory::Registerでは拡張子ではなくマクロエンジン名(Unique ID)＋アドレスの対応を登録する。<br>・サポートする拡張子一覧を取得するための新たなメソッドを各エンジンに追加。<br>・呼び出すときは拡張子→エンジン名→Creatorアドレスと探す。<br>・拡張子の再検索ボタンが押されたら、拡張子←→エンジン名の対応表を作り直す。<br>・対応表が空だったら対応表を作成する。<br>・拡張子が未登録ならCreatorを順に呼び出す。もし対応するエンジンがあればその対応を対応表に登録する。<br><br>いかがでしょうか。<br></div></section>
    <ul><li><section><h1 id=2059>
    <span class="no">[2059]</span>
    <a class="thread-title" href="#2059">Re3: Factoryの振舞いとレジストリ検索</a>
    <span class="author">やざき</span>
    <time datetime="2002-05-14T10:15:30">2002年05月14日 10:15</time></h1>
    <div class="body"><br>&gt;各マネージャがCShareDataにアクセスせず、追加されるボタンが公正な動作をするための実装案です。<br>&gt;・CMacroFactoryが拡張子←→Engine名の対応表iniへの記録に責任を持つ。<br>&gt;・CMacroFactory::Registerでは拡張子ではなくマクロエンジン名(Unique ID)＋アドレスの対応を登録する。<br>&gt;・サポートする拡張子一覧を取得するための新たなメソッドを各エンジンに追加。<br>&gt;・呼び出すときは拡張子→エンジン名→Creatorアドレスと探す。<br>&gt;・拡張子の再検索ボタンが押されたら、拡張子←→エンジン名の対応表を作り直す。<br>&gt;・対応表が空だったら対応表を作成する。<br>&gt;・拡張子が未登録ならCreatorを順に呼び出す。もし対応するエンジンがあればその対応を対応表に登録する。<br>&gt;<br>&gt;いかがでしょうか。<br><br>えーと、結局のところユーザ側から見える動きはどうなるのですか？<br>iniファイルがあったら、スキャンしないとか、ボタンがどこにあるとか。<br></div></section>
    <ul><li><section><h1 id=2060>
    <span class="no">[2060]</span>
    <a class="thread-title" href="#2060">Re4: Factoryの振舞いとレジストリ検索</a>
    <span class="author">げんた</span>
    <time datetime="2002-05-15T03:47:18">2002年05月15日 03:47</time></h1>
    <div class="body">▼ やざきさん<br>&gt; えーと、結局のところユーザ側から見える動きはどうなるのですか？<br>&gt; iniファイルがあったら、スキャンしないとか、ボタンがどこにあるとか。<br>初期値を空にしておくことで、CMacroFactoryの初期化時に<br>ini有り＝登録有り: スキャンせずiniをそのまま登録<br>ini無し＝登録無し: スキャン実行<br>という挙動を行うことになると思います。<br>CMacroFactoryは初期化時にデータをチェックする必要があります。<br><br>と、ここまで書いて思いましたが、<br>iniを使う→CShareDataを使う→固定長の足かせのために上限が出来てしまう。<br>といった問題が出ますが...別ファイルに保存というのも変だしねぇ。<br>どうしましょう。<br><br>ボタンはマクロ設定のどこか妥当なところ(^^)</div></section>
    <ul><li><section><h1 id=2069>
    <span class="no">[2069]</span>
    <a class="thread-title" href="#2069">Re5: Factoryの振舞いとレジストリ検索</a>
    <span class="author">おに</span>
    <time datetime="2002-05-16T16:20:06">2002年05月16日 16:20</time></h1>
    <div class="body">エンジン列挙メソッドを付けてみました。(ほとんどみくさんにいただいたサンプルの写しの上、動作確認の手段が無いので確認はしてません)<br>他にはm_OnErrorのNULLチェックを一ヶ所で行うようにとか。<br><br><a href=http://www.egroups.co.jp/files/sakura-editor/Developer/Source/WSHHandler6.lzh target=_top><nobr>http://<wbr>www.<wbr>egroups.<wbr>co.<wbr>jp/<wbr>files/<wbr>sakura-<wbr>editor/<wbr>Develope<wbr>r/<wbr>Source/<wbr>WSHHandl<wbr>er6.<wbr>lzh</nobr></a><br><br>後は期待モードでいられたらいいな…。</div></section>
    </li><li><section><h1 id=2086>
    <span class="no">[2086]</span>
    <a class="thread-title" href="#2086">Re5: Factoryの振舞いとレジストリ検索</a>
    <span class="author">やざき</span>
    <time datetime="2002-05-22T11:02:49">2002年05月22日 11:02</time></h1>
    <div class="body"><br>&gt;と、ここまで書いて思いましたが、<br>&gt;iniを使う→CShareDataを使う→固定長の足かせのために上限が出来てしまう。<br>&gt;といった問題が出ますが...別ファイルに保存というのも変だしねぇ。<br>&gt;どうしましょう。<br><br>一般のほうであおられて出てきたよ(笑)<br>別ファイルでもいいと思います。そうすれば、手で書くこともできるし（使うかわからないけど）<br><br>ということで、<br><br>macro.ini有り＝登録有り: スキャンせずiniをそのまま登録<br>macro.ini無し＝登録無し: スキャン実行<br><br>macro.iniはsakura.iniとは別物。<br><br>という仕様で、あとはよろしく!!<br></div></section>
    <ul><li><section><h1 id=2089>
    <span class="no">[2089]</span>
    <a class="thread-title" href="#2089">Re6: Factoryの振舞いとレジストリ検索</a>
    <span class="author">げんた</span>
    <time datetime="2002-05-22T18:26:48">2002年05月22日 18:26</time></h1>
    <div class="body">&gt;という仕様で、あとはよろしく!!<br>あ、先に言われてしまった...でも今週末まではちょっと時間がとれません。m(_ _)m<br></div></section>
    </li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></li></ul></body></html>